home *** CD-ROM | disk | FTP | other *** search
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "c_calls.h"
-
- void insert_cell(LIST *list, const char *name)
-
- /*
- Insert a new cell in the list with the specified name and return a
- pointer to the head of the list. The new cell is inserted in
- alphabetical order.
- */
-
- {
- LIST new_cell;
-
- if ((*list == NULL) || (namecmp(name, (*list)->name) < 0))
- {
- if ((new_cell = malloc(sizeof(CELL))) == NULL)
- error("out of memory");
-
- new_cell->calls = new_cell->called_from = NULL;
- strcpy(new_cell->name, name);
-
- if (*list == NULL)
- new_cell->next = NULL;
- else
- new_cell->next = *list;
-
- *list = new_cell;
- }
- else
- if (stricmp(name, (*list)->name) != 0)
- insert_cell((&(*list)->next), name);
- }
-
-
- void delete_cell(LIST *list, const char *name)
-
- /* Delete the cell with the specified name from the list. */
-
- {
- LIST ptr;
-
- /* If cell to be deleted is at head of list... */
- if ((*list != NULL) && (stricmp(name, (*list)->name) == 0))
- {
- /* Delete the cell. */
- ptr = *list;
- *list = (*list)->next;
- free(ptr);
- }
-
- else
- /* Try to delete the cell from the rest of the list. */
- if (*list != NULL)
- delete_cell(&(*list)->next, name);
- }
-
-
- LIST find_cell(LIST list, const char *name)
-
- /*
- Return a pointer to the cell containing the specified name
- if it is found in the list. Otherwise return NULL.
- */
-
- {
- for (; list != NULL; list = list->next)
- if (stricmp(name, list->name) == 0)
- return list;
-
- return NULL;
- }
-